package com.mathdroid.crawler.weapons;

import java.util.LinkedList;

/**
 * Items of the type "Weapon" require a proficiency to use them. 
 */
public enum EWeaponProficiency {
	
	/**
	 * Assault Cannon.
	 */
	ASSAULT_CANNON("Assault Cannon"),
	/**
	 * Blaster Pistol.
	 */
	BLASTER_PISTOL("Blaster Pistol"),
	/**
	 * Blaster Rifle.
	 */
	BLASTER_RIFLE("Blaster Rifle"),
	/**
	 * Scattergun.
	 */
	SCATTERGUN("Scattergun"),
	/**
	 * Sniper Rifle.
	 */
	SNIPER_RIFLE("Sniper Rifle"),
	/**
	 * Double-Bladed Lightsaber.
	 */
	DOUBLE_BLADED_LIGHTSABER("Double-Bladed Lightsaber"),
	/**
	 * Electrostaff.
	 */
	ELECTROSTAFF("Electrostaff"),
	/**
	 * Gauntlet.
	 */
	GAUNTLET("Gauntlet"),
	/**
	 * Lightsaber.
	 */
	LIGHTSABER("Lightsaber"),
	/**
	 * Training Saber.
	 */
	TRAINING_SABER("Training Saber"),
	/**
	 * Vibroknife.
	 */
	VIBROKNIFE("Vibroknife"),
	/**
	 * Vibrosword.
	 */
	VIBROSWORD("Vibrosword");
	
	/**
	 * String representation of the proficiency.
	 */
	private String name = null;
	
	/**
	 * Create a new item proficiency enumeration.
	 * @param n Name of the proficiency.
	 */
	private EWeaponProficiency(final String n) {
		this.name = n;
	}
	
	@Override	
	public String toString() {
		return this.name;
	}
	
	/**
	 * Get a list of all weapon proficiencies.
	 * @return All weapon proficiencies for weapons.
	 */
	public static final LinkedList<EWeaponProficiency> 
	getWeaponProficiencies() {
		LinkedList<EWeaponProficiency> types = 
			new LinkedList<EWeaponProficiency>();
		
		types.add(ASSAULT_CANNON);
		types.add(BLASTER_PISTOL);
		types.add(BLASTER_RIFLE);
		types.add(SCATTERGUN);
		types.add(SNIPER_RIFLE);
		types.add(DOUBLE_BLADED_LIGHTSABER);
		types.add(ELECTROSTAFF);
		types.add(GAUNTLET);
		types.add(LIGHTSABER);
		types.add(TRAINING_SABER);
		types.add(VIBROKNIFE);
		types.add(VIBROSWORD);
		
		return types;
	}
}
